package co.yixiang.modules.shop.service;

import co.yixiang.modules.shop.domain.YxInvestOrder;
import co.yixiang.modules.shop.service.dto.SubscribeGoodsQueryCriteria;
import co.yixiang.modules.shop.service.dto.YxInvestOrderDto;
import co.yixiang.modules.shop.service.dto.YxInvestOrderQueryCriteria;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
* @author frq
* @date 2020-06-10
*/
public interface YxInvestOrderService {

    /**
    * 查询数据分页
    * @param criteria 条件
    * @param pageable 分页参数
    * @return Map<String,Object>
    */
    Map<String,Object> queryAll(YxInvestOrderQueryCriteria criteria, Pageable pageable);

    /**
    * 查询所有数据不分页
    * @param criteria 条件参数
    * @return List<YxInvestOrderDto>
    */
    List<YxInvestOrderDto> queryAll(YxInvestOrderQueryCriteria criteria);

    /**
     * 根据ID查询
     * @param id ID
     * @return YxInvestOrderDto
     */
    YxInvestOrderDto findById(Integer id);

    /**
    * 创建
    * @param resources /
    * @return YxInvestOrderDto
    */
    YxInvestOrderDto create(YxInvestOrder resources);

    /**
    * 编辑
    * @param resources /
    */
    void update(YxInvestOrder resources);

    /**
    * 多选删除
    * @param ids /
    */
    void deleteAll(Integer[] ids);

    /**
     * 统计业务员提成
     * @return
     */
    List<Map<String,Object>> findSalesCommission();

    List<Integer> findByListOrderId();

    void updateInvestStatus(Integer id, int investStatus);

    /**
     * 查询已认购的商品
     * @param criteria
     * @param pageable
     * @return
     */
    Map<String,Object> findListSubscribeGoods(SubscribeGoodsQueryCriteria criteria, Pageable pageable);

    /**
     * 查询商品ID
     * @param orderId 投资订单ID
     * @return
     */
    List<Integer> findListProductId(Integer orderId);

    /**
     * 更新商品为已投资商品
     * @param productId
     * @param isInvested
     * @param investName
     */
    void updateIsInvested(Integer productId, int isInvested,String investName);

    /**
     * 查询支付超时的商品ID
     * @param i
     * @param pay_timeout
     * @return
     */
    List<Map<String,Integer>> findListGoods(int i, String pay_timeout);

    /**
     * 更新支付超时的订单
     * @param map
     */
    void updatePaymentTimeout(Map<String,Integer> map);

    /**
     * 更新订单支付状态
     * @param id
     * @param paid
     */
    void updatePayStatus(Integer id, Integer paid);

    List<Map<String,Object>> getMachine(int number);
}